package com.zhan.rkforum.dao;

import com.zhan.rkforum.bean.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;


/**
 * @author Salvation
 * @date 2021/06/27
 */
@Repository
@Mapper
public interface UserMapper {
    /**
     * 根据id查询User
     *
     * @param id 用户id
     * @return 根据id查询到的User
     */
    User findUserById(@Param("id")int id);


    /**
     * 更具用户名查询用户
     *
     * @param username 用户名
     * @return {@link User}
     */
    User findUserByUserName(String username);

    /**
     * 找到用户通过电子邮件
     * 根据邮箱查询用户
     *
     * @param email 邮箱
     * @return {@link User}
     */
    User findUserByEmail(String email);

    /**
     * 插入用户
     * 插入用户信息
     *
     * @param user 用户信息
     * @return int
     */
    int insertUser(User user);

    /**
     * 找到用户id和密码
     *
     * @param id   id
     * @param code 代码
     * @return {@link User}
     */
    User findUserByIdAndCode(@Param("userId") int id,@Param("code") String code);

    /**
     * 更新状态
     *
     * @param username 用户名
     * @param status 状态值
     * @return int
     */
    int updateStatus(@Param("username") String username,@Param("status") int status);

    /**
     * 根据用户名查询用户id
     *
     * @param name 用户名
     * @return int
     */
    int findUserIdByName(@Param("name") String name);

    /**
     * 更新头像的url
     *
     * @param id        id
     * @param headerUrl 头像url
     */
    void updateHeaderUrl(@Param("id")int id,@Param("headerUrl") String headerUrl);

    /**
     * 更新密码
     *
     * @param id          id
     * @param newPassword 新密码
     */
    void updatePassword(@Param("id") int id, @Param("newPassword") String newPassword);
}
